package com.ys.p3Set接口与HashSet与LinkedHashSet;

import java.util.LinkedHashSet;

/**
 * 描述: LinkedHashSet了解与使用
 *   1.LinkedHashSet的概述
 *  *   LinkedHashSet底层采用“LinkedHashMap”来实现，存储的元素为key值，value默认全部存储的是static修饰的Object对象。
 *  * 2.LinkedHashSet的特点
 *  *   LinkedHashSet存储的元素是有序的，当然存储的元素绝对不允许重复，其余的地方和HashSet一模一样。
 * @author CodeYang
 * @version 2020/12/28 21:04
 */
public class LinkedHashSet了解与使用 {


    /**
     * LinkedHashSet  是  extends HashSet<E> 的子类
     * 的底层就是一个 简化版的
     * 调用的是一个:
     *  public LinkedHashSet() {
     *         super(16, .75f, true);
     *     }
     *  HashSet 父类:
     *      HashSet(int initialCapacity, float loadFactor, boolean dummy) {
     *         map = new LinkedHashMap<>(initialCapacity, loadFactor);
     *   }
     * LinkedHashMap
     * @param args
     */
    public static void main(String[] args) {
        // 因为底层是一个 LinkedHashMap 所以是一个根据插入排序的 有序的集合
        // 而LinkedHashMap 是 HashMap 的子类 这里的add()调用的还是一个

        /***
         *  public boolean add(E e) {
         *         return map.put(e, PRESENT)==null;
         *     }
         *     还是存储的是一个 根据插入顺序的排序的 集合
         */

        LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
        linkedHashSet.add("1");
        linkedHashSet.add("3");
        linkedHashSet.add("5");
        linkedHashSet.add("6");

        for (String s : linkedHashSet) {
            System.out.println(s);
        }

    }
}
